package mystudy
// 映射map知识点
import "fmt"

func DemoMap(){
	// 定义map变量
	var a map[int]string
	a = make(map[int]string, 1)
	a[100] = "中国"
	a[99] = "美国"
	a[98] = "印度"
	fmt.Println(a)
	fmt.Println("-----")
	var map1 map[int]string
	map1 = make(map[int]string)
	map1[66] = "以色列"
	map1[68] = "巴勒斯坦"
	fmt.Println(map1)
	fmt.Println("------")
	var map2 map[int]string = map[int]string{
		123:"123",
	}
	fmt.Println(map2)
	fmt.Println("-----")
	map3 := map[int]string{
		345:"345",
	}
	fmt.Println(map3)

	fmt.Println("-----")

	// 定义多级映射
	var selfInfoMap map[string]map[string]string
	selfInfoMap =  make(map[string]map[string]string)
	selfInfoMap["student1"] = make(map[string]string)
	selfInfoMap["student1"]["name"] = "张三"
	selfInfoMap["student1"]["age"] = "19"
	selfInfoMap["student1"]["notes"] = "优秀"

	for _,v := range selfInfoMap{
		fmt.Printf("学生：%v, 年龄：%v, 备注：%v\n",
				v["name"],
				v["age"],
				v["notes"])
	}
	// 获取长度
	fmt.Println(len(selfInfoMap))
	// map基本操作
	fmt.Println("------map基本操作------")
	map6 := make(map[int]int)
	map6[1] = 111
	map6[2] = 222
	fmt.Println(map6)
	// 增加操作
	map6[3] = 333
	fmt.Println("新增key:3 value", map6[3])
    // 更新操作 
	map6[3] = 33333
	fmt.Println("修改key:3 value", map6[3])
	// 删除操作
	fmt.Println("删除前map6：", map6)
	delete(map6,3)
	fmt.Println("删除后map6：", map6)
	// 清空map6
	// map6 = make(map[int]string)
	// fmt.Println(map6)
	// 获取值操作
	value, bool1:= map6[2]
	fmt.Printf("%T, %T\n", value, bool1)
	fmt.Println(value, bool1)
	value, bool1 = map6[22]
	fmt.Printf("%T, %T\n", value, bool1)
	fmt.Println(value, bool1)
}